草庐IT

while循环中的php sum变量

全部标签

javascript - 变量未定义=真;

我正在对这个恶意JavaScript行进行一些试验:varundefined=true;JavaScript中每个未初始化的变量都有undefined的值,这只是一个保存特殊值'undefined'的变量,所以下面应该执行警报:varundefined=true,x;if(x){alert('ok');}但事实并非如此,我的问题是为什么?在进一步的实验中,我尝试了以下方法:varundefined=true,x=undefined;if(x){alert('ok');}这一次,alert被执行。所以我的问题是...因为在第一个片段中x包含undefined(因为它没有被初始化),为什么

javascript - 在循环中,结束条件中的任何操作是否在每次迭代中都得到评估?

在下面的代码中:for(vari=0;i操作object.length是否在迭代中每次都被评估?最有意义的是,该语言将对其进行一次评估并保存结果。但是,我正在阅读一些代码,其中有人在循环开始之前评估操作并将其存储在结束条件中使用的变量中。不同的语言对此有不同的处理方式吗?有关于Javascript的具体信息吗? 最佳答案 这显然取决于语言。对于JavaScript,规范(ECMAScript§12.6.3)要求每次都对其求值。作为一种优化,特定的JavaScript运行时可以跳过一个或多个length调用,如果它可以证明结果不会改变

javascript - 在Javascript中,setTimeout中使用的变量范围是什么?

我在函数中使用以下代码:setTimeout("doSomething(var1)",10000);但是,我还有var1可用作全局变量。10000毫秒后,它会调用本地var1还是全局var1? 最佳答案 这个:setTimeout('doSomething(var1)',10000);将传递全局变量var1,还有这个:setTimeout(function(){doSomething(var1);},10000);将传递局部变量var1。现场演示:http://jsfiddle.net/simevidas/EQMaz/

javascript - 为什么 JavaScript split() 使用不同的变量名会产生不同的输出?

以下是Chrome开发者控制台的一些代码和输出案例1:varmyarr=document.location.hostname.split(".");//typedundefined//outputmyarr[0]//typed"ptamz"//output:ONE案例2:varname=document.location.hostname.split(".");//typedundefined//outputname[0]//typed"p"//output:TWO为什么两个输出(注释Output:ONE和Output:TWO)不同?截图: 最佳答案

javascript - 全局变量只是 `window` 对象的属性吗?

每当我在浏览器上看到一个网站时,一个javascript实例正在运行。我可以在控制台(DevTools)中声明一个全局变量;vara=1234567890;此变量已在全局范围内声明,这样我就可以像这样获取变量的值;>a1234567890不过,我也可以这样做;>window.a1234567890我是否正确理解window对象是包含浏览器网站实例中所有全局变量的对象?如果是这样,窗口对象属于什么范围?这让我有点困惑;>windowWindow{top:Window,window:Window,location:Location,external:,...}>window.windowW

Javascript-变量提升

这是一个简单的片段,我只是不明白。下面的代码输出12,我明白了,因为varfoo=12;替换了之前的变量声明。varfoo=1;functionbar(){if(!foo){varfoo=12;}alert(foo);}bar();在下面的代码中,它警告1,这意味着在函数外部声明的变量在函数内部是可以访问的。varfoo=1;functionbar(){alert(foo);}bar();但是,在下面的代码中,为什么会提示undefined?我想,它会提醒1,我只是将之前声明的变量分配给新变量。varfoo=1;functionbar(){if(!foo){varfoo=foo;}al

javascript - 为什么在使用它之前在 Javascript 中声明一个变量不是必须的?

在Javascript中,我们不必在使用变量之前使用var关键字声明它。我们可以立即执行myCount=12;或myStr="Hello";(之前未声明myCount、myStr)。任何此类用法都在“全局”范围内声明和初始化变量。提供此功能的原因可能是什么?这是一个好的标准吗?更新:我的问题不是“在不声明的情况下使用变量”和“先声明然后使用”之间的区别是什么,以及它如何影响范围。我的问题是“为什么在javascript中允许直接使用变量而不声明它”,因为大多数编程语言对此都有严格的检查。更新:我认为以下引用的文字是此功能的不良影响。那么,为什么要有这个功能呢?“假设有一个全局声明的变量

Javascript 为什么要在 IIFE 中包装变量或构造函数?

我今天看到这样的东西varVisualizer=(function(){functionVisualizer(){//...}Visualizer.prototype.function1=function(){/*...*/}//...returnVisualizer;})();varviz=newVisualizer();我不明白这样做与仅仅摆脱iife包装器相比有何意义。 最佳答案 您在此处展示的特定构造没有意义。在这种类型的构造中使用IIFE的原因是当您有需要声明的静态数据时,希望对您的对象可用,但不希望它可公开访问或干扰全局

Javascript:将多个参数作为单个变量传递

是否可以使用单个变量传递多个参数?例如,如果我想做类似的事情:functionfoo(x,y){document.write("Xis"+x);document.write("Yis"+y);}varbar="0,10";foo(bar);上面的例子是我试图做的一个简化例子。它不起作用(因为“bar”被检测为单个参数)。我知道有更简单的方法可以使用数组来实现这一点。所以,我问这个问题主要是出于好奇-是否有可能将“bar”变量检测为不是一个参数,而是2个参数?谢谢! 最佳答案 functionfoo(thing){document.w

javascript - 在javascript匿名方法中访问复制的整数变量

我是一名C#开发人员,习惯于C#中闭包的工作方式。目前我必须使用匿名javascript函数并遇到以下代码片段的问题:functionClosureTest(){varfuncArray=newArray();vari=0;while(i我希望第一个funcArray()调用返回0,第二个调用返回1。但是,他们都说1。这怎么可能?通过编写varcontextCopy=i,我确保创建了i变量的副本。然后,在每次while迭代中,我创建一个全新的函数指针。每个函数都引用它自己的i副本,即contextCopy。但是,出于某种原因,两个创建的函数都引用相同的contextCopy变量。这在j